1. Field of the Invention
The present invention relates to the field of distributed applications, client/server topographies, speech processing and, more particularly, to client/server application task allocation based upon accessed client resources.
2. Description of the Related Art
Conventional client/server distributed applications do not take into account the amount of processing power a client has at a given time and do not attempt to match available client resources with client-centric tasks. Instead, client/server applications generally follow a “one size fits all” paradigm, where each client is treated in a similar fashion to every other client. The disregard of the processing power (in terms of available bandwidth, CPU capabilities, memory, and other resources) available through the client can greatly reduce the client responsiveness. Alternatively, failure to access and utilize available client resources can needlessly consume server resources as well as other limited network resources.
The deficiency of a one size fits all paradigm is especially problematic in client/server applications running on handheld devices and other computing devices having limited resources. For example, the wide use of handheld devices, such as smart phones, personal data assistants, pervasive computing devices, embedded devices, and the like, that interact with various voice applications has brought speech recognition and synthesis to the forefront of software development. Speech recognition and speech synthesis capabilities can consume extreme amounts of computing resources, like CPU cycles, RAM, and non-volatile memory. Additionally, devices utilizing distributed speech processing applications have greatly varying capabilities. As a result, some client devices can locally execute speech processing tasks, other client devices can locally execute a portion of desired speech processing task, and still other client devices cannot execute significant speech processing tasks using local resources.
This situation is further complicated because many client devices have multitasking capabilities, so that these client devices can execute speech processing tasks locally when other activities are low, but when other client-centric tasks are being performed, lack the resources to locally execute speech processing tasks.
Accordingly, a mechanism is needed that can analyze the capabilities and resources available within a client and can, based upon this analysis, allocate application tasks between a client and a server. Preferably, this mechanism could be capable of allocating tasks using statically and/or dynamically determined client resource information.